/*
 ***********************************************************************************************************************
 *
 *  Copyright (c) 2017-2021 Advanced Micro Devices, Inc. All Rights Reserved.
 *
 *  Permission is hereby granted, free of charge, to any person obtaining a copy
 *  of this software and associated documentation files (the "Software"), to deal
 *  in the Software without restriction, including without limitation the rights
 *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 *  copies of the Software, and to permit persons to whom the Software is
 *  furnished to do so, subject to the following conditions:
 *
 *  The above copyright notice and this permission notice shall be included in all
 *  copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 *  SOFTWARE.
 *
 **********************************************************************************************************************/
/**
***********************************************************************************************************************
* @file  vfxEnumsConverter.cpp
* @brief Contains implementation of functions to convert string to enums.
***********************************************************************************************************************
*/

#include "vfxEnumsConverter.h"
#include "vfx.h"
#include <assert.h>
#include <map>
#include <string.h>
#include <string>

namespace Vfx {

// =====================================================================================================================
// Gets enum convert map
std::map<std::string, int> &getEnumMap() {
  static std::map<std::string, int> EnumMap;
  return EnumMap;
};

// =====================================================================================================================
// Gets enum value from enum string
//
// @param string : Enum string
// @param [out] value : Enum value
bool getEnumValue(const char *string, int &value) {
  bool ret = false;
  std::map<std::string, int>::iterator it = getEnumMap().find(string);
  if (it != getEnumMap().end()) {
    value = it->second;
    ret = true;
  }
  return ret;
}

// =====================================================================================================================
// Initializes enum convert map
void initEnumMap() {
  // Add Vk enums
  ADD_ENUM_MAP(VkPipelineCacheHeaderVersion, VK_PIPELINE_CACHE_HEADER_VERSION_ONE);
  ADD_ENUM_MAP(VkPipelineCacheHeaderVersion, VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM);
  ADD_ENUM_MAP(VkResult, VK_SUCCESS);
  ADD_ENUM_MAP(VkResult, VK_NOT_READY);
  ADD_ENUM_MAP(VkResult, VK_TIMEOUT);
  ADD_ENUM_MAP(VkResult, VK_EVENT_SET);
  ADD_ENUM_MAP(VkResult, VK_EVENT_RESET);
  ADD_ENUM_MAP(VkResult, VK_INCOMPLETE);
  ADD_ENUM_MAP(VkResult, VK_ERROR_OUT_OF_HOST_MEMORY);
  ADD_ENUM_MAP(VkResult, VK_ERROR_OUT_OF_DEVICE_MEMORY);
  ADD_ENUM_MAP(VkResult, VK_ERROR_INITIALIZATION_FAILED);
  ADD_ENUM_MAP(VkResult, VK_ERROR_DEVICE_LOST);
  ADD_ENUM_MAP(VkResult, VK_ERROR_MEMORY_MAP_FAILED);
  ADD_ENUM_MAP(VkResult, VK_ERROR_LAYER_NOT_PRESENT);
  ADD_ENUM_MAP(VkResult, VK_ERROR_EXTENSION_NOT_PRESENT);
  ADD_ENUM_MAP(VkResult, VK_ERROR_FEATURE_NOT_PRESENT);
  ADD_ENUM_MAP(VkResult, VK_ERROR_INCOMPATIBLE_DRIVER);
  ADD_ENUM_MAP(VkResult, VK_ERROR_TOO_MANY_OBJECTS);
  ADD_ENUM_MAP(VkResult, VK_ERROR_FORMAT_NOT_SUPPORTED);
  ADD_ENUM_MAP(VkResult, VK_ERROR_FRAGMENTED_POOL);
  ADD_ENUM_MAP(VkResult, VK_ERROR_UNKNOWN);
  ADD_ENUM_MAP(VkResult, VK_ERROR_OUT_OF_POOL_MEMORY);
  ADD_ENUM_MAP(VkResult, VK_ERROR_INVALID_EXTERNAL_HANDLE);
  ADD_ENUM_MAP(VkResult, VK_ERROR_FRAGMENTATION);
  ADD_ENUM_MAP(VkResult, VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS);
  ADD_ENUM_MAP(VkResult, VK_ERROR_SURFACE_LOST_KHR);
  ADD_ENUM_MAP(VkResult, VK_ERROR_NATIVE_WINDOW_IN_USE_KHR);
  ADD_ENUM_MAP(VkResult, VK_SUBOPTIMAL_KHR);
  ADD_ENUM_MAP(VkResult, VK_ERROR_OUT_OF_DATE_KHR);
  ADD_ENUM_MAP(VkResult, VK_ERROR_INCOMPATIBLE_DISPLAY_KHR);
  ADD_ENUM_MAP(VkResult, VK_ERROR_VALIDATION_FAILED_EXT);
  ADD_ENUM_MAP(VkResult, VK_ERROR_INVALID_SHADER_NV);
  ADD_ENUM_MAP(VkResult, VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT);
  ADD_ENUM_MAP(VkResult, VK_ERROR_NOT_PERMITTED_EXT);
  ADD_ENUM_MAP(VkResult, VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT);
  ADD_ENUM_MAP(VkResult, VK_RESULT_MAX_ENUM);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_APPLICATION_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_SUBMIT_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_BIND_SPARSE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_FENCE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_EVENT_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_MEMORY_BARRIER);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PRESENT_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT);
  ADD_ENUM_MAP(VkStructureType, VK_STRUCTURE_TYPE_MAX_ENUM);
  ADD_ENUM_MAP(VkSystemAllocationScope, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
  ADD_ENUM_MAP(VkSystemAllocationScope, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
  ADD_ENUM_MAP(VkSystemAllocationScope, VK_SYSTEM_ALLOCATION_SCOPE_CACHE);
  ADD_ENUM_MAP(VkSystemAllocationScope, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
  ADD_ENUM_MAP(VkSystemAllocationScope, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
  ADD_ENUM_MAP(VkSystemAllocationScope, VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM);
  ADD_ENUM_MAP(VkInternalAllocationType, VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE);
  ADD_ENUM_MAP(VkInternalAllocationType, VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_UNDEFINED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R4G4_UNORM_PACK8);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R4G4B4A4_UNORM_PACK16);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B4G4R4A4_UNORM_PACK16);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R5G6B5_UNORM_PACK16);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B5G6R5_UNORM_PACK16);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R5G5B5A1_UNORM_PACK16);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B5G5R5A1_UNORM_PACK16);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A1R5G5B5_UNORM_PACK16);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8_SRGB);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8_SRGB);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8_SRGB);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8_SRGB);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8A8_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8A8_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8A8_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8A8_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8A8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8A8_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R8G8B8A8_SRGB);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8A8_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8A8_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8A8_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8A8_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8A8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8A8_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B8G8R8A8_SRGB);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A8B8G8R8_UNORM_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A8B8G8R8_SNORM_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A8B8G8R8_USCALED_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A8B8G8R8_SSCALED_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A8B8G8R8_UINT_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A8B8G8R8_SINT_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A8B8G8R8_SRGB_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2R10G10B10_UNORM_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2R10G10B10_SNORM_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2R10G10B10_USCALED_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2R10G10B10_SSCALED_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2R10G10B10_UINT_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2R10G10B10_SINT_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2B10G10R10_UNORM_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2B10G10R10_SNORM_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2B10G10R10_USCALED_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2B10G10R10_SSCALED_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2B10G10R10_UINT_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A2B10G10R10_SINT_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16A16_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16A16_SNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16A16_USCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16A16_SSCALED);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16A16_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16A16_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R16G16B16A16_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32B32_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32B32_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32B32_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32B32A32_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32B32A32_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R32G32B32A32_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64B64_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64B64_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64B64_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64B64A64_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64B64A64_SINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_R64G64B64A64_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_B10G11R11_UFLOAT_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_E5B9G9R9_UFLOAT_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_D16_UNORM);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_X8_D24_UNORM_PACK32);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_D32_SFLOAT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_S8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_D16_UNORM_S8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_D24_UNORM_S8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_D32_SFLOAT_S8_UINT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC1_RGB_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC1_RGB_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC1_RGBA_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC1_RGBA_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC2_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC2_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC3_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC3_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC4_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC4_SNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC5_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC5_SNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC6H_UFLOAT_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC6H_SFLOAT_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC7_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_BC7_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_EAC_R11_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_EAC_R11_SNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_EAC_R11G11_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_EAC_R11G11_SNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_4x4_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_4x4_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_5x4_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_5x4_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_5x5_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_5x5_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_6x5_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_6x5_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_6x6_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_6x6_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_8x5_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_8x5_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_8x6_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_8x6_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_8x8_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_8x8_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_10x5_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_10x5_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_10x6_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_10x6_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_10x8_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_10x8_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_10x10_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_10x10_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_12x10_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_12x10_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_12x12_UNORM_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_ASTC_12x12_SRGB_BLOCK);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT);
  ADD_ENUM_MAP(VkFormat, VK_FORMAT_MAX_ENUM);
  ADD_ENUM_MAP(VkImageType, VK_IMAGE_TYPE_1D);
  ADD_ENUM_MAP(VkImageType, VK_IMAGE_TYPE_2D);
  ADD_ENUM_MAP(VkImageType, VK_IMAGE_TYPE_3D);
  ADD_ENUM_MAP(VkImageType, VK_IMAGE_TYPE_MAX_ENUM);
  ADD_ENUM_MAP(VkImageTiling, VK_IMAGE_TILING_OPTIMAL);
  ADD_ENUM_MAP(VkImageTiling, VK_IMAGE_TILING_LINEAR);
  ADD_ENUM_MAP(VkImageTiling, VK_IMAGE_TILING_MAX_ENUM);
  ADD_ENUM_MAP(VkPhysicalDeviceType, VK_PHYSICAL_DEVICE_TYPE_OTHER);
  ADD_ENUM_MAP(VkPhysicalDeviceType, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU);
  ADD_ENUM_MAP(VkPhysicalDeviceType, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU);
  ADD_ENUM_MAP(VkPhysicalDeviceType, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU);
  ADD_ENUM_MAP(VkPhysicalDeviceType, VK_PHYSICAL_DEVICE_TYPE_CPU);
  ADD_ENUM_MAP(VkPhysicalDeviceType, VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM);
  ADD_ENUM_MAP(VkQueryType, VK_QUERY_TYPE_OCCLUSION);
  ADD_ENUM_MAP(VkQueryType, VK_QUERY_TYPE_PIPELINE_STATISTICS);
  ADD_ENUM_MAP(VkQueryType, VK_QUERY_TYPE_TIMESTAMP);
  ADD_ENUM_MAP(VkQueryType, VK_QUERY_TYPE_MAX_ENUM);
  ADD_ENUM_MAP(VkSharingMode, VK_SHARING_MODE_EXCLUSIVE);
  ADD_ENUM_MAP(VkSharingMode, VK_SHARING_MODE_CONCURRENT);
  ADD_ENUM_MAP(VkSharingMode, VK_SHARING_MODE_MAX_ENUM);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_UNDEFINED);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_GENERAL);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_PREINITIALIZED);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR);
  ADD_ENUM_MAP(VkImageLayout, VK_IMAGE_LAYOUT_MAX_ENUM);
  ADD_ENUM_MAP(VkImageViewType, VK_IMAGE_VIEW_TYPE_1D);
  ADD_ENUM_MAP(VkImageViewType, VK_IMAGE_VIEW_TYPE_2D);
  ADD_ENUM_MAP(VkImageViewType, VK_IMAGE_VIEW_TYPE_3D);
  ADD_ENUM_MAP(VkImageViewType, VK_IMAGE_VIEW_TYPE_CUBE);
  ADD_ENUM_MAP(VkImageViewType, VK_IMAGE_VIEW_TYPE_1D_ARRAY);
  ADD_ENUM_MAP(VkImageViewType, VK_IMAGE_VIEW_TYPE_2D_ARRAY);
  ADD_ENUM_MAP(VkImageViewType, VK_IMAGE_VIEW_TYPE_CUBE_ARRAY);
  ADD_ENUM_MAP(VkImageViewType, VK_IMAGE_VIEW_TYPE_MAX_ENUM);
  ADD_ENUM_MAP(VkComponentSwizzle, VK_COMPONENT_SWIZZLE_IDENTITY);
  ADD_ENUM_MAP(VkComponentSwizzle, VK_COMPONENT_SWIZZLE_ZERO);
  ADD_ENUM_MAP(VkComponentSwizzle, VK_COMPONENT_SWIZZLE_ONE);
  ADD_ENUM_MAP(VkComponentSwizzle, VK_COMPONENT_SWIZZLE_R);
  ADD_ENUM_MAP(VkComponentSwizzle, VK_COMPONENT_SWIZZLE_G);
  ADD_ENUM_MAP(VkComponentSwizzle, VK_COMPONENT_SWIZZLE_B);
  ADD_ENUM_MAP(VkComponentSwizzle, VK_COMPONENT_SWIZZLE_A);
  ADD_ENUM_MAP(VkComponentSwizzle, VK_COMPONENT_SWIZZLE_MAX_ENUM);
  ADD_ENUM_MAP(VkVertexInputRate, VK_VERTEX_INPUT_RATE_VERTEX);
  ADD_ENUM_MAP(VkVertexInputRate, VK_VERTEX_INPUT_RATE_INSTANCE);
  ADD_ENUM_MAP(VkVertexInputRate, VK_VERTEX_INPUT_RATE_MAX_ENUM);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_POINT_LIST);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_LINE_LIST);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_PATCH_LIST);
  ADD_ENUM_MAP(VkPrimitiveTopology, VK_PRIMITIVE_TOPOLOGY_MAX_ENUM);
  ADD_ENUM_MAP(VkPolygonMode, VK_POLYGON_MODE_FILL);
  ADD_ENUM_MAP(VkPolygonMode, VK_POLYGON_MODE_LINE);
  ADD_ENUM_MAP(VkPolygonMode, VK_POLYGON_MODE_POINT);
  ADD_ENUM_MAP(VkPolygonMode, VK_POLYGON_MODE_MAX_ENUM);
  ADD_ENUM_MAP(VkFrontFace, VK_FRONT_FACE_COUNTER_CLOCKWISE);
  ADD_ENUM_MAP(VkFrontFace, VK_FRONT_FACE_CLOCKWISE);
  ADD_ENUM_MAP(VkFrontFace, VK_FRONT_FACE_MAX_ENUM);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_NEVER);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_LESS);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_EQUAL);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_LESS_OR_EQUAL);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_GREATER);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_NOT_EQUAL);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_GREATER_OR_EQUAL);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_ALWAYS);
  ADD_ENUM_MAP(VkCompareOp, VK_COMPARE_OP_MAX_ENUM);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_KEEP);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_ZERO);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_REPLACE);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_INCREMENT_AND_CLAMP);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_DECREMENT_AND_CLAMP);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_INVERT);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_INCREMENT_AND_WRAP);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_DECREMENT_AND_WRAP);
  ADD_ENUM_MAP(VkStencilOp, VK_STENCIL_OP_MAX_ENUM);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_CLEAR);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_AND);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_AND_REVERSE);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_COPY);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_AND_INVERTED);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_NO_OP);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_XOR);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_OR);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_NOR);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_EQUIVALENT);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_INVERT);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_OR_REVERSE);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_COPY_INVERTED);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_OR_INVERTED);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_NAND);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_SET);
  ADD_ENUM_MAP(VkLogicOp, VK_LOGIC_OP_MAX_ENUM);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ZERO);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_SRC_COLOR);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_DST_COLOR);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_SRC_ALPHA);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_DST_ALPHA);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_CONSTANT_COLOR);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_CONSTANT_ALPHA);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_SRC_ALPHA_SATURATE);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_SRC1_COLOR);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_SRC1_ALPHA);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA);
  ADD_ENUM_MAP(VkBlendFactor, VK_BLEND_FACTOR_MAX_ENUM);
  ADD_ENUM_MAP(VkBlendOp, VK_BLEND_OP_ADD);
  ADD_ENUM_MAP(VkBlendOp, VK_BLEND_OP_SUBTRACT);
  ADD_ENUM_MAP(VkBlendOp, VK_BLEND_OP_REVERSE_SUBTRACT);
  ADD_ENUM_MAP(VkBlendOp, VK_BLEND_OP_MIN);
  ADD_ENUM_MAP(VkBlendOp, VK_BLEND_OP_MAX);
  ADD_ENUM_MAP(VkBlendOp, VK_BLEND_OP_MAX_ENUM);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_VIEWPORT);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_SCISSOR);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_LINE_WIDTH);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_DEPTH_BIAS);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_BLEND_CONSTANTS);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_DEPTH_BOUNDS);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_STENCIL_WRITE_MASK);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_STENCIL_REFERENCE);
  ADD_ENUM_MAP(VkDynamicState, VK_DYNAMIC_STATE_MAX_ENUM);
  ADD_ENUM_MAP(VkFilter, VK_FILTER_NEAREST);
  ADD_ENUM_MAP(VkFilter, VK_FILTER_LINEAR);
  ADD_ENUM_MAP(VkFilter, VK_FILTER_CUBIC_IMG);
  ADD_ENUM_MAP(VkFilter, VK_FILTER_MAX_ENUM);
  ADD_ENUM_MAP(VkSamplerMipmapMode, VK_SAMPLER_MIPMAP_MODE_NEAREST);
  ADD_ENUM_MAP(VkSamplerMipmapMode, VK_SAMPLER_MIPMAP_MODE_LINEAR);
  ADD_ENUM_MAP(VkSamplerMipmapMode, VK_SAMPLER_MIPMAP_MODE_MAX_ENUM);
  ADD_ENUM_MAP(VkSamplerAddressMode, VK_SAMPLER_ADDRESS_MODE_REPEAT);
  ADD_ENUM_MAP(VkSamplerAddressMode, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT);
  ADD_ENUM_MAP(VkSamplerAddressMode, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE);
  ADD_ENUM_MAP(VkSamplerAddressMode, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER);
  ADD_ENUM_MAP(VkSamplerAddressMode, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE);
  ADD_ENUM_MAP(VkSamplerAddressMode, VK_SAMPLER_ADDRESS_MODE_MAX_ENUM);
  ADD_ENUM_MAP(VkBorderColor, VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK);
  ADD_ENUM_MAP(VkBorderColor, VK_BORDER_COLOR_INT_TRANSPARENT_BLACK);
  ADD_ENUM_MAP(VkBorderColor, VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK);
  ADD_ENUM_MAP(VkBorderColor, VK_BORDER_COLOR_INT_OPAQUE_BLACK);
  ADD_ENUM_MAP(VkBorderColor, VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE);
  ADD_ENUM_MAP(VkBorderColor, VK_BORDER_COLOR_INT_OPAQUE_WHITE);
  ADD_ENUM_MAP(VkBorderColor, VK_BORDER_COLOR_MAX_ENUM);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_SAMPLER);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT);
  ADD_ENUM_MAP(VkDescriptorType, VK_DESCRIPTOR_TYPE_MAX_ENUM);
  ADD_ENUM_MAP(VkAttachmentLoadOp, VK_ATTACHMENT_LOAD_OP_LOAD);
  ADD_ENUM_MAP(VkAttachmentLoadOp, VK_ATTACHMENT_LOAD_OP_CLEAR);
  ADD_ENUM_MAP(VkAttachmentLoadOp, VK_ATTACHMENT_LOAD_OP_DONT_CARE);
  ADD_ENUM_MAP(VkAttachmentLoadOp, VK_ATTACHMENT_LOAD_OP_MAX_ENUM);
  ADD_ENUM_MAP(VkAttachmentStoreOp, VK_ATTACHMENT_STORE_OP_STORE);
  ADD_ENUM_MAP(VkAttachmentStoreOp, VK_ATTACHMENT_STORE_OP_DONT_CARE);
  ADD_ENUM_MAP(VkAttachmentStoreOp, VK_ATTACHMENT_STORE_OP_MAX_ENUM);
  ADD_ENUM_MAP(VkPipelineBindPoint, VK_PIPELINE_BIND_POINT_GRAPHICS);
  ADD_ENUM_MAP(VkPipelineBindPoint, VK_PIPELINE_BIND_POINT_COMPUTE);
  ADD_ENUM_MAP(VkPipelineBindPoint, VK_PIPELINE_BIND_POINT_MAX_ENUM);
  ADD_ENUM_MAP(VkCommandBufferLevel, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
  ADD_ENUM_MAP(VkCommandBufferLevel, VK_COMMAND_BUFFER_LEVEL_SECONDARY);
  ADD_ENUM_MAP(VkCommandBufferLevel, VK_COMMAND_BUFFER_LEVEL_MAX_ENUM);
  ADD_ENUM_MAP(VkIndexType, VK_INDEX_TYPE_UINT16);
  ADD_ENUM_MAP(VkIndexType, VK_INDEX_TYPE_UINT32);
  ADD_ENUM_MAP(VkIndexType, VK_INDEX_TYPE_MAX_ENUM);
  ADD_ENUM_MAP(VkSubpassContents, VK_SUBPASS_CONTENTS_INLINE);
  ADD_ENUM_MAP(VkSubpassContents, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS);
  ADD_ENUM_MAP(VkSubpassContents, VK_SUBPASS_CONTENTS_MAX_ENUM);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_BLIT_SRC_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_BLIT_DST_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG);
  ADD_ENUM_MAP(VkFormatFeatureFlagBits, VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_TRANSFER_SRC_BIT);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_TRANSFER_DST_BIT);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_SAMPLED_BIT);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_STORAGE_BIT);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT);
  ADD_ENUM_MAP(VkImageUsageFlagBits, VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkImageCreateFlagBits, VK_IMAGE_CREATE_SPARSE_BINDING_BIT);
  ADD_ENUM_MAP(VkImageCreateFlagBits, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT);
  ADD_ENUM_MAP(VkImageCreateFlagBits, VK_IMAGE_CREATE_SPARSE_ALIASED_BIT);
  ADD_ENUM_MAP(VkImageCreateFlagBits, VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT);
  ADD_ENUM_MAP(VkImageCreateFlagBits, VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT);
  ADD_ENUM_MAP(VkImageCreateFlagBits, VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkSampleCountFlagBits, VK_SAMPLE_COUNT_1_BIT);
  ADD_ENUM_MAP(VkSampleCountFlagBits, VK_SAMPLE_COUNT_2_BIT);
  ADD_ENUM_MAP(VkSampleCountFlagBits, VK_SAMPLE_COUNT_4_BIT);
  ADD_ENUM_MAP(VkSampleCountFlagBits, VK_SAMPLE_COUNT_8_BIT);
  ADD_ENUM_MAP(VkSampleCountFlagBits, VK_SAMPLE_COUNT_16_BIT);
  ADD_ENUM_MAP(VkSampleCountFlagBits, VK_SAMPLE_COUNT_32_BIT);
  ADD_ENUM_MAP(VkSampleCountFlagBits, VK_SAMPLE_COUNT_64_BIT);
  ADD_ENUM_MAP(VkSampleCountFlagBits, VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkQueueFlagBits, VK_QUEUE_GRAPHICS_BIT);
  ADD_ENUM_MAP(VkQueueFlagBits, VK_QUEUE_COMPUTE_BIT);
  ADD_ENUM_MAP(VkQueueFlagBits, VK_QUEUE_TRANSFER_BIT);
  ADD_ENUM_MAP(VkQueueFlagBits, VK_QUEUE_SPARSE_BINDING_BIT);
  ADD_ENUM_MAP(VkQueueFlagBits, VK_QUEUE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkMemoryPropertyFlagBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
  ADD_ENUM_MAP(VkMemoryPropertyFlagBits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT);
  ADD_ENUM_MAP(VkMemoryPropertyFlagBits, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
  ADD_ENUM_MAP(VkMemoryPropertyFlagBits, VK_MEMORY_PROPERTY_HOST_CACHED_BIT);
  ADD_ENUM_MAP(VkMemoryPropertyFlagBits, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT);
#ifdef VK_AMD_device_coherent_memory
  ADD_ENUM_MAP(VkMemoryPropertyFlagBits, VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD);
#endif
  ADD_ENUM_MAP(VkMemoryPropertyFlagBits, VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkMemoryHeapFlagBits, VK_MEMORY_HEAP_DEVICE_LOCAL_BIT);
  ADD_ENUM_MAP(VkMemoryHeapFlagBits, VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_VERTEX_INPUT_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_TRANSFER_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_HOST_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT);
  ADD_ENUM_MAP(VkPipelineStageFlagBits, VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkImageAspectFlagBits, VK_IMAGE_ASPECT_COLOR_BIT);
  ADD_ENUM_MAP(VkImageAspectFlagBits, VK_IMAGE_ASPECT_DEPTH_BIT);
  ADD_ENUM_MAP(VkImageAspectFlagBits, VK_IMAGE_ASPECT_STENCIL_BIT);
  ADD_ENUM_MAP(VkImageAspectFlagBits, VK_IMAGE_ASPECT_METADATA_BIT);
  ADD_ENUM_MAP(VkImageAspectFlagBits, VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkSparseImageFormatFlagBits, VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT);
  ADD_ENUM_MAP(VkSparseImageFormatFlagBits, VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT);
  ADD_ENUM_MAP(VkSparseImageFormatFlagBits, VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT);
  ADD_ENUM_MAP(VkSparseImageFormatFlagBits, VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkSparseMemoryBindFlagBits, VK_SPARSE_MEMORY_BIND_METADATA_BIT);
  ADD_ENUM_MAP(VkSparseMemoryBindFlagBits, VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkFenceCreateFlagBits, VK_FENCE_CREATE_SIGNALED_BIT);
  ADD_ENUM_MAP(VkFenceCreateFlagBits, VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits,
               VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT);
  ADD_ENUM_MAP(VkQueryPipelineStatisticFlagBits, VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkQueryResultFlagBits, VK_QUERY_RESULT_64_BIT);
  ADD_ENUM_MAP(VkQueryResultFlagBits, VK_QUERY_RESULT_WAIT_BIT);
  ADD_ENUM_MAP(VkQueryResultFlagBits, VK_QUERY_RESULT_WITH_AVAILABILITY_BIT);
  ADD_ENUM_MAP(VkQueryResultFlagBits, VK_QUERY_RESULT_PARTIAL_BIT);
  ADD_ENUM_MAP(VkQueryResultFlagBits, VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkBufferCreateFlagBits, VK_BUFFER_CREATE_SPARSE_BINDING_BIT);
  ADD_ENUM_MAP(VkBufferCreateFlagBits, VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT);
  ADD_ENUM_MAP(VkBufferCreateFlagBits, VK_BUFFER_CREATE_SPARSE_ALIASED_BIT);
  ADD_ENUM_MAP(VkBufferCreateFlagBits, VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_TRANSFER_SRC_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_TRANSFER_DST_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_INDEX_BUFFER_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT);
  ADD_ENUM_MAP(VkBufferUsageFlagBits, VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkPipelineCreateFlagBits, VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT);
  ADD_ENUM_MAP(VkPipelineCreateFlagBits, VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT);
  ADD_ENUM_MAP(VkPipelineCreateFlagBits, VK_PIPELINE_CREATE_DERIVATIVE_BIT);
  ADD_ENUM_MAP(VkPipelineCreateFlagBits, VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_VERTEX_BIT);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_GEOMETRY_BIT);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_FRAGMENT_BIT);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_COMPUTE_BIT);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_ALL_GRAPHICS);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_ALL);
  ADD_ENUM_MAP(VkShaderStageFlagBits, VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkCullModeFlagBits, VK_CULL_MODE_NONE);
  ADD_ENUM_MAP(VkCullModeFlagBits, VK_CULL_MODE_FRONT_BIT);
  ADD_ENUM_MAP(VkCullModeFlagBits, VK_CULL_MODE_BACK_BIT);
  ADD_ENUM_MAP(VkCullModeFlagBits, VK_CULL_MODE_FRONT_AND_BACK);
  ADD_ENUM_MAP(VkCullModeFlagBits, VK_CULL_MODE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkColorComponentFlagBits, VK_COLOR_COMPONENT_R_BIT);
  ADD_ENUM_MAP(VkColorComponentFlagBits, VK_COLOR_COMPONENT_G_BIT);
  ADD_ENUM_MAP(VkColorComponentFlagBits, VK_COLOR_COMPONENT_B_BIT);
  ADD_ENUM_MAP(VkColorComponentFlagBits, VK_COLOR_COMPONENT_A_BIT);
  ADD_ENUM_MAP(VkColorComponentFlagBits, VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkDescriptorPoolCreateFlagBits, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT);
  ADD_ENUM_MAP(VkDescriptorPoolCreateFlagBits, VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkAttachmentDescriptionFlagBits, VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT);
  ADD_ENUM_MAP(VkAttachmentDescriptionFlagBits, VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_INDIRECT_COMMAND_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_INDEX_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_UNIFORM_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_INPUT_ATTACHMENT_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_SHADER_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_SHADER_WRITE_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_COLOR_ATTACHMENT_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_TRANSFER_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_TRANSFER_WRITE_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_HOST_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_HOST_WRITE_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_MEMORY_READ_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_MEMORY_WRITE_BIT);
  ADD_ENUM_MAP(VkAccessFlagBits, VK_ACCESS_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkDependencyFlagBits, VK_DEPENDENCY_BY_REGION_BIT);
  ADD_ENUM_MAP(VkDependencyFlagBits, VK_DEPENDENCY_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkCommandPoolCreateFlagBits, VK_COMMAND_POOL_CREATE_TRANSIENT_BIT);
  ADD_ENUM_MAP(VkCommandPoolCreateFlagBits, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT);
  ADD_ENUM_MAP(VkCommandPoolCreateFlagBits, VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkCommandPoolResetFlagBits, VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT);
  ADD_ENUM_MAP(VkCommandPoolResetFlagBits, VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkCommandBufferUsageFlagBits, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
  ADD_ENUM_MAP(VkCommandBufferUsageFlagBits, VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT);
  ADD_ENUM_MAP(VkCommandBufferUsageFlagBits, VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT);
  ADD_ENUM_MAP(VkCommandBufferUsageFlagBits, VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkQueryControlFlagBits, VK_QUERY_CONTROL_PRECISE_BIT);
  ADD_ENUM_MAP(VkQueryControlFlagBits, VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkCommandBufferResetFlagBits, VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT);
  ADD_ENUM_MAP(VkCommandBufferResetFlagBits, VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkStencilFaceFlagBits, VK_STENCIL_FACE_FRONT_BIT);
  ADD_ENUM_MAP(VkStencilFaceFlagBits, VK_STENCIL_FACE_BACK_BIT);
  ADD_ENUM_MAP(VkStencilFaceFlagBits, VK_STENCIL_FRONT_AND_BACK);
  ADD_ENUM_MAP(VkStencilFaceFlagBits, VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM);
  ADD_ENUM_MAP(VkColorSpaceKHR, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR);
  ADD_ENUM_MAP(VkColorSpaceKHR, VK_COLOR_SPACE_MAX_ENUM_KHR);
  ADD_ENUM_MAP(VkPresentModeKHR, VK_PRESENT_MODE_IMMEDIATE_KHR);
  ADD_ENUM_MAP(VkPresentModeKHR, VK_PRESENT_MODE_MAILBOX_KHR);
  ADD_ENUM_MAP(VkPresentModeKHR, VK_PRESENT_MODE_FIFO_KHR);
  ADD_ENUM_MAP(VkPresentModeKHR, VK_PRESENT_MODE_FIFO_RELAXED_KHR);
  ADD_ENUM_MAP(VkPresentModeKHR, VK_PRESENT_MODE_MAX_ENUM_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR);
  ADD_ENUM_MAP(VkSurfaceTransformFlagBitsKHR, VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR);
  ADD_ENUM_MAP(VkCompositeAlphaFlagBitsKHR, VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR);
  ADD_ENUM_MAP(VkCompositeAlphaFlagBitsKHR, VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR);
  ADD_ENUM_MAP(VkCompositeAlphaFlagBitsKHR, VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR);
  ADD_ENUM_MAP(VkCompositeAlphaFlagBitsKHR, VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR);
  ADD_ENUM_MAP(VkCompositeAlphaFlagBitsKHR, VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR);
  ADD_ENUM_MAP(VkDisplayPlaneAlphaFlagBitsKHR, VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR);
  ADD_ENUM_MAP(VkDisplayPlaneAlphaFlagBitsKHR, VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR);
  ADD_ENUM_MAP(VkDisplayPlaneAlphaFlagBitsKHR, VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR);
  ADD_ENUM_MAP(VkDisplayPlaneAlphaFlagBitsKHR, VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR);
  ADD_ENUM_MAP(VkDisplayPlaneAlphaFlagBitsKHR, VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT);
  ADD_ENUM_MAP(VkDebugReportObjectTypeEXT, VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT);
  ADD_ENUM_MAP(VkDebugReportFlagBitsEXT, VK_DEBUG_REPORT_INFORMATION_BIT_EXT);
  ADD_ENUM_MAP(VkDebugReportFlagBitsEXT, VK_DEBUG_REPORT_WARNING_BIT_EXT);
  ADD_ENUM_MAP(VkDebugReportFlagBitsEXT, VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT);
  ADD_ENUM_MAP(VkDebugReportFlagBitsEXT, VK_DEBUG_REPORT_ERROR_BIT_EXT);
  ADD_ENUM_MAP(VkDebugReportFlagBitsEXT, VK_DEBUG_REPORT_DEBUG_BIT_EXT);
  ADD_ENUM_MAP(VkDebugReportFlagBitsEXT, VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT);
  ADD_ENUM_MAP(VkRasterizationOrderAMD, VK_RASTERIZATION_ORDER_STRICT_AMD);
  ADD_ENUM_MAP(VkRasterizationOrderAMD, VK_RASTERIZATION_ORDER_RELAXED_AMD);
  ADD_ENUM_MAP(VkRasterizationOrderAMD, VK_RASTERIZATION_ORDER_MAX_ENUM_AMD);
  ADD_ENUM_MAP(VkExternalMemoryHandleTypeFlagBitsNV, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV);
  ADD_ENUM_MAP(VkExternalMemoryHandleTypeFlagBitsNV, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV);
  ADD_ENUM_MAP(VkExternalMemoryHandleTypeFlagBitsNV, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV);
  ADD_ENUM_MAP(VkExternalMemoryHandleTypeFlagBitsNV, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV);
  ADD_ENUM_MAP(VkExternalMemoryHandleTypeFlagBitsNV, VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV);
  ADD_ENUM_MAP(VkExternalMemoryFeatureFlagBitsNV, VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV);
  ADD_ENUM_MAP(VkExternalMemoryFeatureFlagBitsNV, VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV);
  ADD_ENUM_MAP(VkExternalMemoryFeatureFlagBitsNV, VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV);
  ADD_ENUM_MAP(VkExternalMemoryFeatureFlagBitsNV, VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV);
  ADD_ENUM_MAP(VkValidationCheckEXT, VK_VALIDATION_CHECK_ALL_EXT);
  ADD_ENUM_MAP(VkValidationCheckEXT, VK_VALIDATION_CHECK_MAX_ENUM_EXT);
  ADD_ENUM_MAP(VkRayTracingShaderGroupTypeNV, VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV);
  ADD_ENUM_MAP(VkRayTracingShaderGroupTypeNV, VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV);
  ADD_ENUM_MAP(VkRayTracingShaderGroupTypeNV, VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV);
}

} // namespace Vfx
